package com.project.erp.service.system;

import java.util.List;

import com.project.erp.model.system.Privilege;
import com.project.erp.model.system.Role;

/**
 * 菜单管理
 *
 */
public interface PrivilegeService {

	/**
	 * 查询全部数据信息
	 * @return List<AcctPrivilege>
	 */
	public List<Privilege> queryPrivileges(Privilege privilege);
	
	/**
	 * 返回所有的根节点的菜单数据
	 * @return List<AcctPrivilege>
	 */
	public List<Privilege> getPrivilegeParentByRoot();
	
	/**
	 * 根据节点ID取得该节点的树形菜单的数据
	 * @param privilegeId
	 * @return AcctPrivilege
	 */
	public Privilege getPrivilegeTreeById(Long privilegeId);
	
	/**
	 * 获取所有菜单类型的数据,封装成树形结构数据
	 * @return List<AcctPrivilege>
	 */
	public List<Privilege> getAllPrivilegeMenuTree();
	
	/**
	 * 获取所有数据包含非菜单的数据,封装成树形结构数据
	 * @return List<AcctPrivilege>
	 */
	public List<Privilege> getAllPrilegeTree(Long roleId);
	
	/**
	 * 封装成树形结构数据
	 * @param parentList 所有父节点
	 * @param allList 所有数据信息
	 */
	public void handerTreeData(List<Privilege> parentList,List<Privilege> allList);
	
	/**
	 * 保存资源信息
	 * @param privilege 资源信息
	 */
	public void savePrivilege(Privilege privilege);
	
	/**
	 * 修改资源文件
	 * @param privilege 资源信息
	 */
	public void editPrivilege(Privilege privilege);
	
	/**
	 * 根据Id获取资源文件信息
	 * @param id主键
	 * @return privilege
	 */
	public Privilege getPrivilegeById(Long id);
	
	/**
	 * 根据父节点获取父节点下的所有子节点信息
	 * @param parentId 父节点Id
	 * @return List<Privilege>所有的子节点
	 */
	public List<Privilege> getPrivilegeByParentId(Long parentId);
	
	/**
	 * 删除资源信息
	 * @param privilegeId
	 */
	public boolean delPrivilege(Long privilegeId);
	
	/**
	 * 通过角色获取角色相关权限信息
	 * @param roles 角色列表
	 * @return List<Privilege>
	 */
	public List<Privilege> getPrivilegeByRoles(List<Role> roles);
}
